home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 1
/
Gekikoh Dennoh Club Vol. 1 (Japan).7z
/
Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin
/
kowin
/
archive
/
sys
/
kowin14d.lzh
/
doc
/
programming
/
kowin_p9.doc
< prev
next >
Wrap
Text File
|
1995-12-02
|
4KB
|
121 lines
Ko-Window プログラミングと C言語ライブラリの関係
Ko-Window のプログラミングには C言語のライブラリが必要不可欠となります。し
かしウィンドウという性質から、使用できる関数とできない関数が存在します。
●入出力
ウィンドウプログラムにおける入出力は、基本的にウィンドウサーバーを通さなけ
ればなりません。
・画面への表示出力
すべてサーバーの描画機能を使用して下さい。標準出力への出力関数など、
ウィンドウを通さない出力関数は使用してはいけません。
・キー入力やマウス入力
サーバーからのイベント入力を使用します。標準入力から読み取る関数など、
ウィンドウを通さない入力は使用してはいけません。
・ファイル入出力 <MT>
C言語ライブラリがそのまま使用できます。ただし、高レベルのファイル操
作関数では内部で malloc()/free() を使用するため、ヒープ領域の設定が
必要になります。
ファイル名の管理は常にフルパスで行うようにして下さい。(もしくは各ア
プリケーションが起動時のカレントディレクトリを保存する) Ko-Window の
ようなマルチタスク環境では、カレントディレクトリはいつでも変更されて
しまう可能性があり、一定ではないからです。(Human68k はカレントディレ
クトリを OS 内部管理し、かつ1つしか持たないため)
もしフルパスで保存していなければ、テキストエディタを起動しても途中で
カレントディレクトリが変わってしまい、セーブしたら別の場所に書き込ん
でしまった、なんてことが起こります。そのファイルのフルパスを得る関数
として PathGetFullName() が用意されているのでぜひ使用して下さい。
・その他デバイス
ジョイスティック、音楽関係、RS-232C、などは、特にサーバーが管理して
いないのでC言語レベルでそのまま使用することになります。
●メモリ管理 <MT>
メモリの確保と開放は、C言語ライブラリがそのまま使用できます。malloc/free で
す。ただしあらかじめヒープ領域サイズを与えておかなければなりません。この制限
は最近軽減され、mm_alloc ライブラリ(mm_klib.a)を使用すれば自己拡張して動的な
消費メモリの変化について行けるようになりました。
ヒープ領域の管理はサーバーが行います。C言語のヒープメモリサイズを変更する
ような関数(sbrk()等)は使用してはいけません。
●シグナル
C言語のシグナル関数 signal() 系は使用できません。Ko-Window の場合、元々イ
ベントというシグナルによって駆動されているので、根本的にプログラミングスタイ
ルが異なっているからです。
●大域ジャンプ
setjmp(), longjmp() を使った大域ジャンプは、保存したスタックフレームが固定
でない可能性があるため使用できません。
●プロセスの起動 <MT>
exec() 系のプロセス起動関数は使用できません。Ko-Window の場合は、プログラ
ムの起動はすべて WindowLoadExec() を通す必要があります。
●環境変数 <MT>
Ko-Window の各アプリケーションは環境領域のコピーを持っていません。よって、
自分のプロセス内部の環境変数(Cライブラリ内部の変数)をアクセスしようとする関数
getenv()/setenv() を使用してはいけません。
代わりに KoWindowGetEvn() (親プロセスの変数を参照する) を用いるか、DOS CALL
でそのまま親の環境を利用するか、自分でコピーを作ったのちアクセスするようにし
て下さい。
● DOS CALL / IOCS CALL <MT>
サーバーの管理しているデバイス以外を扱う場合は、これらを直接使用することに
なります。ただし、サーバーの管理と衝突するようなものは当然使用できません。も
しどれが使えてどれが使えないのか判断がつかない時は、無理に使用しないのが無難
です。
●その他
文字列操作、数値演算など、システムと無関係なライブラリ関数はもちろん使用し
て構いません。
● MiniTERM (mtmlib) について
MiniTERM(mtmlib) は、C言語の通常のプログラミングスタイルのままプログラムが
組めるようになる特殊なライブラリです。このライブラリを使っている限りにおいて
は、Ko-Window プログラミング上使える、使えない、の判定は必ずしも当てはまりま
せん。<MT> のマークがついた部分は MiniTERM 使用時でも注意すべき項目として読
んで下さい。
----
1995 11/16 初期公開版
小笠原博之
oga@dgw.yz.yamagata-u.ac.jp
DenDenNET: DEN0006 COR.